// site.isscloud.project.constants.BusinessConstants.java
package site.isscloud.project.constants;

/**
 * 业务常量类 - 存储电梯温度预警系统的全局业务参数
 */
public class BusinessConstants {

    // ========== 温度异常检测相关常量 ==========

    /**
     * 异常温度绝对阈值 - 超过此温度肯定异常 (°C)
     */
    public static final double ABNORMAL_TEMP_ABSOLUTE_THRESHOLD = 60.0;

    /**
     * 异常温度相对阈值 - 比周围温度高多少度算异常 (°C)
     */
    public static final double ABNORMAL_TEMP_RELATIVE_THRESHOLD = 20.0;

    /**
     * 警告温度阈值 - 达到此温度发出警告 (°C)
     */
    public static final double WARNING_TEMP_THRESHOLD = 60.0;

    /**
     * 严重异常温度阈值 - 达到此温度属于严重异常 (°C)
     */
    public static final double CRITICAL_TEMP_THRESHOLD = 80.0;

    // ========== 温度数据模拟相关常量 ==========

    /**
     * 基础温度下限 (°C)
     */
    public static final double BASE_TEMP_MIN = 25.0;

    /**
     * 基础温度上限 (°C)
     */
    public static final double BASE_TEMP_MAX = 30.0;

    /**
     * 异常温度基准 (°C)
     */
    public static final double ABNORMAL_TEMP_BASE = 60.0;

    /**
     * 异常温度范围 (°C)
     */
    public static final double ABNORMAL_TEMP_RANGE = 40.0;

    // ========== 设备配置相关常量 ==========

    /**
     * 每个设备+通道的高温米标数量
     */
    public static final int HIGH_TEMP_METER_COUNT = 10;

    /**
     * 升温持续时间 (秒)
     */
    public static final int WARM_UP_DURATION_SECONDS = 120;

    /**
     * 高温持续时间 (秒)
     */
    public static final int HIGH_TEMP_DURATION_SECONDS = 300;

    /**
     * 降温持续时间 (秒)
     */
    public static final int COOL_DOWN_DURATION_SECONDS = 180;

    /**
     * 降温后不再升温的时间间隔 (秒)
     */
    public static final int COOL_DOWN_INTERVAL_SECONDS = 300;

    /**
     * 米标开始升温的时间间隔 (秒)
     */
    public static final int WARM_UP_START_INTERVAL_SECONDS = 60;

    // ========== MQTT配置相关常量 ==========

    /**
     * 实时数据主题
     */
    public static final String MQTT_REALTIME_TOPIC = "isscloud/elevator/realtime";

    /**
     * 告警数据主题
     */
    public static final String MQTT_ALARM_TOPIC = "isscloud/elevator/alarm";

    /**
     * 实时数据QoS等级
     */
    public static final int MQTT_REALTIME_QOS = 0;

    /**
     * 告警数据QoS等级
     */
    public static final int MQTT_ALARM_QOS = 1;

    // ========== 其他业务常量 ==========

    /**
     * 默认设备编号
     */
    public static final String DEFAULT_DEVICE_NO = "001";

    /**
     * 默认起始米标
     */
    public static final int DEFAULT_START_METER = 1;

    /**
     * 默认结束米标
     */
    public static final int DEFAULT_END_METER = 1500;

    /**
     * 数据保留天数
     */
    public static final int DATA_RETENTION_DAYS = 30;

    /**
     * 批量处理数据大小
     */
    public static final int BATCH_PROCESS_SIZE = 1000;
}